#include "inicializacao.h"

int verificaQueArvore(int xDes, int yDes, vector <ARVORE> arvores)
{
    int numeroQVaiSerRetornado = -1;

    for (int i=0; i< arvores.size(); i++)
    {
        if (xDes == arvores[i].x && yDes == arvores[i].y)
        {
            numeroQVaiSerRetornado = i;
            break;
        }
    }
    return numeroQVaiSerRetornado;
}

int procuraArvoreMaisPerto(int xDes, int yDes, vector <ARVORE> arvores)
{
    int numeroASerRetornado = 0;
    for (int i = 0; i < arvores.size(); i++)
    {
        if (abs(arvores[i].x - xDes)+ (abs(arvores[i].y - yDes)) < abs(arvores[numeroASerRetornado].x - xDes)+ (abs(arvores[numeroASerRetornado].y - yDes)))
            numeroASerRetornado = i;
    }
    return numeroASerRetornado;
}

int procuraVacaMaisPerto(int xDes, int yDes, vector <VACA> vacas)
{
    int numeroASerRetornado = 0;
    for (int i = 0; i < vacas.size(); i++)
    {
        if (abs(vacas[i].x - xDes)+ (abs(vacas[i].y - yDes)) < abs(vacas[numeroASerRetornado].x - xDes)+ (abs(vacas[numeroASerRetornado].y - yDes)))
            numeroASerRetornado = i;
    }
    return numeroASerRetornado;
}

int verificaQueVaca(int xDes, int yDes, vector <VACA> vacas)
{
    int numeroQVaiSerRetornado = -1;

    for (int i=0; i< vacas.size(); i++)
    {
        if (xDes == vacas[i].x && yDes == vacas[i].y)
        {
            numeroQVaiSerRetornado = i;
            break;
        }
    }
    return numeroQVaiSerRetornado;
}

int verificaSeHaAlgumaCoisa (int xDesej, int yDesej, vector <VACA> vacas, vector <ARVORE> arvores, vector<CIDADAO> aldeoes, ONIBUS townCenter, vector <BARRACK> barracas, vector<GUERREIRO> guerreiro)  ///Nescessario adicionar objetao NAO ESQUECER
{

    if (xDesej >= LIMITEMAXX || xDesej <= LIMITEMINX || yDesej >= LIMITEMAXY || yDesej <= LIMITEMINY)
        return nErro;
    for (unsigned int i = 0; i < vacas.size(); i++)
    {
        if (vacas[i].x==xDesej && vacas[i].y == yDesej)
            return nVaca;
    }
    for (unsigned int i = 0; i < arvores.size(); i++)
    {
        if (arvores[i].x==xDesej && arvores[i].y == yDesej)
            return nArvore;
    }

    for (unsigned int i = 0; i < aldeoes.size(); i++)
    {
        if (aldeoes[i].x==xDesej && aldeoes[i].y == yDesej)
            return nAldeao;
    }

    for (unsigned int i = 0; i < guerreiro.size(); i++)
    {
        if (guerreiro[i].x==xDesej && guerreiro[i].y == yDesej)
            return nGuerreiro;
    }

    if ((townCenter.x <= xDesej && townCenter.x >= xDesej-6) && (townCenter.y <= yDesej && townCenter.y >= yDesej-2))
        return nTownCenter;

    for (int i = 0; i < barracas.size(); i++)
    {
        if ((barracas[i].x <= xDesej && barracas[i].x >= xDesej-6) && (barracas[i].y <= yDesej && barracas[i].y >= yDesej-2))
            return nBarraca;
    }

    return nNada;
}

bool verificaSeHaAlgumaCoisaPath (int xDesej, int yDesej, vector <VACA> vacas, vector <ARVORE> arvores, vector<CIDADAO> aldeoes, vector<XY> listaAberta, vector <XY> listaFechada, ONIBUS townCenter, vector <BARRACK> barracas, vector<GUERREIRO> guerreiro)  ///Nescessario adicionar objetao NAO ESQUECER
{
    for (unsigned int i = 0; i < listaAberta.size(); i++)
    {
        if (listaAberta[i].x==xDesej && listaAberta[i].y == yDesej)
            return true;
    }
    for (unsigned int i = 0; i < listaFechada.size(); i++)
    {
        if (listaFechada[i].x==xDesej && listaFechada[i].y == yDesej)
            return true;
    }
    if (xDesej >= LIMITEMAXX || xDesej <= LIMITEMINX||yDesej >= LIMITEMAXY || yDesej <= LIMITEMINY)
        return true;
    for (unsigned int i = 0; i < vacas.size(); i++)
    {
        if (vacas[i].x==xDesej && vacas[i].y == yDesej)
            return true;
    }
    for (unsigned int i = 0; i < arvores.size(); i++)
    {
        if (arvores[i].x==xDesej && arvores[i].y == yDesej)
            return true;
    }

    for (unsigned int i = 0; i < aldeoes.size(); i++)
    {
        if (aldeoes[i].x==xDesej && aldeoes[i].y == yDesej)
            return true;
    }

    for (unsigned int i = 0; i < guerreiro.size(); i++)
    {
        if (guerreiro[i].x==xDesej && guerreiro[i].y == yDesej)
            return true;
    }

    if ((townCenter.x <= xDesej && townCenter.x >= xDesej-6) && (townCenter.y <= yDesej && townCenter.y >= yDesej-2))
        return true;

    for (int i = 0; i < barracas.size(); i++)
    {
        if ((barracas[i].x <= xDesej && barracas[i].x >= xDesej-6) && (barracas[i].y <= yDesej && barracas[i].y >= yDesej-2))
            return true;
    }

    return false;
}
